package com.bruce.starts.demo.designpattern.composite;

import java.util.ArrayList;
import java.util.List;

public class Directory extends FileSystemNode{
    private List<FileSystemNode> subNodes = new ArrayList<>();
    public Directory(String path) {
        super(path);
    }

    @Override
    public int countNumOfFiles() {
        int numOfFiles = 0;
        for(FileSystemNode node : subNodes){
            numOfFiles+=node.countNumOfFiles();
        }
        return numOfFiles;
    }

    @Override
    public long countSizeOfFiles() {
        long sizeOfFiles = 0;
        for(FileSystemNode node : subNodes){
            sizeOfFiles+=node.countSizeOfFiles();
        }
        return sizeOfFiles;
    }

    @Override
    public void add(FileSystemNode node) {
        subNodes.add(node);
    }

    @Override
    public void remove(FileSystemNode node) {
        int size = subNodes.size();
        int i =0;
        for(;i<size;i++){
            if(subNodes.get(i).getPath().equalsIgnoreCase(node.getPath())){
                break;
            }
        }
        subNodes.remove(i);
    }

    @Override
    public void print() {
        System.out.println(getPath());
        for(FileSystemNode node : subNodes){
            node.print();
        }
    }
}
